package com.lihepeng.leecode.string;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
 * <p>
 * 示例 1:
 * <p>
 * 输入: s = "anagram", t = "nagaram"
 * 输出: true
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/valid-anagram
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution242 {
    public boolean isAnagram(String s, String t) {
        Map<Character, Integer> map = new HashMap<>();
        Map<Character, Integer> map1 = new HashMap<>();
        for (char c : s.toCharArray()) {
            if (map.containsKey(c)) {
                map.put(c, map.get(c) + 1);
            } else {
                map.put(c, 1);
            }
        }
        for (char c1 : t.toCharArray()) {
            if (map1.containsKey(c1)) {
                map1.put(c1, map1.get(c1) + 1);
            } else {
                map1.put(c1, 1);
            }
        }
        boolean flag = true;
        // 判断两个map里面的内容是不是相同
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            if (map.size() != map1.size() || map1.get(entry.getKey()) == null
                    || !entry.getValue().equals(map1.get(entry.getKey()))) {
                flag = false;
            }
        }

        return flag;
    }

    @Test
    public void runTest() {
        String s1 = "anagram";
        String s2 = "nagaram";
        boolean anagram = isAnagram(s1, s2);
        System.out.println(anagram);
    }
}
